package wikist.service;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * コンテンツをWiki記法からHTMLにコンパイルするサービスです。
 * 
 * @author onjiro.mohyahya
 */
final class WikiNotationCompileService {

    /**
     * ページ内リンクのパターン
     */
    private static final Pattern innterLinkPattern =
        Pattern.compile("\\[\\[([^ ]+)\\]\\]");

    /**
     * 生成不要
     */
    private WikiNotationCompileService() {
    }

    /**
     * Wiki記法の記述内容をHTMLにコンパイルします。
     * 
     * @param src
     *            Wiki記法での記述内容
     * @return srcのHTMLコンパイル文字列
     */
    static StringInHtmlNotation complileInHtml(StringInWikiNotation src) {
        String ret = src.getContent();

        // TODO ページ内リンク以外のコンパイルを未実装
        Matcher matcher = innterLinkPattern.matcher(src.getContent());
        while (matcher.find()) {
            ret =
                ret.replace(matcher.group(), "<a href=/"
                    + matcher.group(1)
                    + ">"
                    + matcher.group(1)
                    + "</a>");
        }
        return new StringInHtmlNotation(ret);
    }
}
